package com.vibration.matlab;

import com.mathworks.toolbox.javabuilder.MWClassID;
import com.mathworks.toolbox.javabuilder.MWException;
import com.mathworks.toolbox.javabuilder.MWNumericArray;

/**
 * 初始化表格
 */
public class InitModelParamters {

    /**
     * 表格初始化数据  计算data,var,limdd
     */
    public static TransInfo getInitModelParameters(int NC, A a, int limdd, int INPO, double[][] indata) throws MWException,Exception {
        if(NC==0){
            NC=2;
        }
        TransInfo transInfo=new TransInfo();
        double[][] ini1={};
        MWNumericArray matArr = new MWNumericArray(ini1, MWClassID.DOUBLE);
        MWNumericArray matInpo = new MWNumericArray(INPO, MWClassID.DOUBLE);
        MWNumericArray matData = new MWNumericArray(indata, MWClassID.DOUBLE);

        InitModelParameters.InitModel initModel=new InitModelParameters.InitModel();
        Object[] res=initModel.InitModelParameters(5,NC,matArr,matInpo,matData);
        /**
         * 得到data数组--表格下面展示的
         */
        MWNumericArray getdata= (MWNumericArray)res[0];
        double[][] data=(double[][]) getdata.toDoubleArray();
        transInfo.setData(data);
        /**
         * 得到var数组
         */
        MWNumericArray getvar= (MWNumericArray)res[1];
        double[][] var=(double[][]) getvar.toDoubleArray();
        a.setVar(var);

        /**
         * 得到limdd
         */
        MWNumericArray getlimdd=(MWNumericArray)res[2];
        int[][] lim=(int[][])getlimdd.toIntArray();
        limdd=lim[0][0];
        /**
         * 得到INPO
         */
        MWNumericArray getINPO=(MWNumericArray)res[3];
        int[][] inpo=(int[][])getINPO.toIntArray();
        INPO=inpo[0][0];
        /**
         * 设置limd
         */
        MWNumericArray getLimd=(MWNumericArray)res[4];
        int[][] limd=(int[][])getLimd.toIntArray();
        a.setLimd(limd);
        /**
         * 设置NC
         */
        a.setNC(NC);
        /**
         * 设置Nsubiter
         */
        a.setST((int)a.getNsubiter()[0][0]);
        transInfo.setINPO(INPO);
        transInfo.setA(a);
        transInfo.setLimdd(limdd);
        return transInfo;
    }

}
